<!doctype html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8" />
    <title>dependency graph</title>
    <style>
      .node:active path,
.node:hover path,
.node.current path,
.node:active polygon,
.node:hover polygon,
.node.current polygon {
  stroke: fuchsia;
  stroke-width: 2;
}

.edge:active path,
.edge:hover path,
.edge.current path,
.edge:active ellipse,
.edge:hover ellipse,
.edge.current ellipse {
  stroke: url(#edgeGradient);
  stroke-width: 3;
  stroke-opacity: 1;
}

.edge:active polygon,
.edge:hover polygon,
.edge.current polygon {
  stroke: fuchsia;
  stroke-width: 3;
  fill: fuchsia;
  stroke-opacity: 1;
  fill-opacity: 1;
}

.edge:active text,
.edge:hover text {
  fill: fuchsia;
}

.cluster path {
  stroke-width: 3;
}

.cluster:active path,
.cluster:hover path {
  fill: #ffff0011;
}

div.hint {
  background-color: #000000aa;
  color: white;
  font-family: Arial, Helvetica, sans-serif;
  border-radius: 1rem;
  position: fixed;
  top: calc(50% - 4em);
  right: calc(50% - 10em);
  border: none;
  padding: 1em 3em 1em 1em;
}

.hint button {
  position: absolute;
  font-weight: bolder;
  right: 0.6em;
  top: 0.6em;
  color: inherit;
  background-color: inherit;
  border: 1px solid currentColor;
  border-radius: 1em;
  margin-left: 0.6em;
}

.hint a {
  color: inherit;
}

#button_help {
  color: white;
  background-color: #00000011;
  border-radius: 1em;
  position: fixed;
  top: 1em;
  right: 1em;
  font-size: 24pt;
  font-weight: bolder;
  width: 2em;
  height: 2em;
  border: none;
}

#button_help:hover {
  cursor: pointer;
  background-color: #00000077;
}

@media print {
  #button_help {
    display: none;
  }

  div.hint {
    display: none;
  }
}

    </style>
  </head>
  <body>
    <button id="button_help">?</button>
    <div id="hints" class="hint" style="display: none">
      <button id="close-hints">x</button>
      <span id="hint-text"></span>
      <ul>
        <li><b>Hover</b> - highlight</li>
        <li><b>Right-click</b> - pin highlight</li>
        <li><b>ESC</b> - clear</li>
      </ul>
    </div>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 9.0.0 (20230911.1827)
 -->
<!-- Title: dependency&#45;cruiser output Pages: 1 -->
<svg width="1350pt" height="1046pt"
 viewBox="0.00 0.00 1350.00 1046.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 1042)">
<title>dependency&#45;cruiser output</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-1042 1346,-1042 1346,4 -4,4"/>
<g id="clust1" class="cluster">
<title>cluster_bin</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M62.88,-8C62.88,-8 111.38,-8 111.38,-8 117.38,-8 123.38,-14 123.38,-20 123.38,-20 123.38,-48 123.38,-48 123.38,-54 117.38,-60 111.38,-60 111.38,-60 62.88,-60 62.88,-60 56.88,-60 50.88,-54 50.88,-48 50.88,-48 50.88,-20 50.88,-20 50.88,-14 56.88,-8 62.88,-8"/>
<text text-anchor="middle" x="87.12" y="-47.45" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">bin</text>
</g>
<g id="clust2" class="cluster">
<title>cluster_src</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M20,-68C20,-68 1322,-68 1322,-68 1328,-68 1334,-74 1334,-80 1334,-80 1334,-1018 1334,-1018 1334,-1024 1328,-1030 1322,-1030 1322,-1030 20,-1030 20,-1030 14,-1030 8,-1024 8,-1018 8,-1018 8,-80 8,-80 8,-74 14,-68 20,-68"/>
<text text-anchor="middle" x="671" y="-1017.45" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">src</text>
</g>
<g id="clust3" class="cluster">
<title>cluster_src/cli</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M28,-337C28,-337 407,-337 407,-337 413,-337 419,-343 419,-349 419,-349 419,-437 419,-437 419,-443 413,-449 407,-449 407,-449 28,-449 28,-449 22,-449 16,-443 16,-437 16,-437 16,-349 16,-349 16,-343 22,-337 28,-337"/>
<text text-anchor="middle" x="217.5" y="-436.45" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">cli</text>
</g>
<g id="clust4" class="cluster">
<title>cluster_src/parse</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M463,-76C463,-76 998.75,-76 998.75,-76 1004.75,-76 1010.75,-82 1010.75,-88 1010.75,-88 1010.75,-266 1010.75,-266 1010.75,-272 1004.75,-278 998.75,-278 998.75,-278 463,-278 463,-278 457,-278 451,-272 451,-266 451,-266 451,-88 451,-88 451,-82 457,-76 463,-76"/>
<text text-anchor="middle" x="730.88" y="-265.45" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">parse</text>
</g>
<g id="clust5" class="cluster">
<title>cluster_src/parse/scxml</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M615.88,-170C615.88,-170 990.75,-170 990.75,-170 996.75,-170 1002.75,-176 1002.75,-182 1002.75,-182 1002.75,-240 1002.75,-240 1002.75,-246 996.75,-252 990.75,-252 990.75,-252 615.88,-252 615.88,-252 609.88,-252 603.88,-246 603.88,-240 603.88,-240 603.88,-182 603.88,-182 603.88,-176 609.88,-170 615.88,-170"/>
<text text-anchor="middle" x="803.31" y="-239.45" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">scxml</text>
</g>
<g id="clust6" class="cluster">
<title>cluster_src/parse/smcat</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M600.5,-84C600.5,-84 678.25,-84 678.25,-84 684.25,-84 690.25,-90 690.25,-96 690.25,-96 690.25,-124 690.25,-124 690.25,-130 684.25,-136 678.25,-136 678.25,-136 600.5,-136 600.5,-136 594.5,-136 588.5,-130 588.5,-124 588.5,-124 588.5,-96 588.5,-96 588.5,-90 594.5,-84 600.5,-84"/>
<text text-anchor="middle" x="639.38" y="-123.45" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">smcat</text>
</g>
<g id="clust7" class="cluster">
<title>cluster_src/render</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M451,-424C451,-424 1175.25,-424 1175.25,-424 1181.25,-424 1187.25,-430 1187.25,-436 1187.25,-436 1187.25,-992 1187.25,-992 1187.25,-998 1181.25,-1004 1175.25,-1004 1175.25,-1004 451,-1004 451,-1004 445,-1004 439,-998 439,-992 439,-992 439,-436 439,-436 439,-430 445,-424 451,-424"/>
<text text-anchor="middle" x="813.12" y="-991.45" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">render</text>
</g>
<g id="clust10" class="cluster">
<title>cluster_src/render/scxml</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M615.88,-896C615.88,-896 1018.88,-896 1018.88,-896 1024.88,-896 1030.88,-902 1030.88,-908 1030.88,-908 1030.88,-966 1030.88,-966 1030.88,-972 1024.88,-978 1018.88,-978 1018.88,-978 615.88,-978 615.88,-978 609.88,-978 603.88,-972 603.88,-966 603.88,-966 603.88,-908 603.88,-908 603.88,-902 609.88,-896 615.88,-896"/>
<text text-anchor="middle" x="817.38" y="-965.45" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">scxml</text>
</g>
<g id="clust8" class="cluster">
<title>cluster_src/render/dot</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M784.88,-582C784.88,-582 1167.25,-582 1167.25,-582 1173.25,-582 1179.25,-588 1179.25,-594 1179.25,-594 1179.25,-756 1179.25,-756 1179.25,-762 1173.25,-768 1167.25,-768 1167.25,-768 784.88,-768 784.88,-768 778.88,-768 772.88,-762 772.88,-756 772.88,-756 772.88,-594 772.88,-594 772.88,-588 778.88,-582 784.88,-582"/>
<text text-anchor="middle" x="976.06" y="-755.45" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">dot</text>
</g>
<g id="clust9" class="cluster">
<title>cluster_src/render/scjson</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M784.88,-776C784.88,-776 1029.75,-776 1029.75,-776 1035.75,-776 1041.75,-782 1041.75,-788 1041.75,-788 1041.75,-876 1041.75,-876 1041.75,-882 1035.75,-888 1029.75,-888 1029.75,-888 784.88,-888 784.88,-888 778.88,-888 772.88,-882 772.88,-876 772.88,-876 772.88,-788 772.88,-788 772.88,-782 778.88,-776 784.88,-776"/>
<text text-anchor="middle" x="907.31" y="-875.45" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">scjson</text>
</g>
<g id="clust11" class="cluster">
<title>cluster_src/render/smcat</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M615.88,-432C615.88,-432 847.62,-432 847.62,-432 853.62,-432 859.62,-438 859.62,-444 859.62,-444 859.62,-472 859.62,-472 859.62,-478 853.62,-484 847.62,-484 847.62,-484 615.88,-484 615.88,-484 609.88,-484 603.88,-478 603.88,-472 603.88,-472 603.88,-444 603.88,-444 603.88,-438 609.88,-432 615.88,-432"/>
<text text-anchor="middle" x="731.75" y="-471.45" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">smcat</text>
</g>
<g id="clust12" class="cluster">
<title>cluster_src/render/vector</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M566,-492C566,-492 860,-492 860,-492 866,-492 872,-498 872,-504 872,-504 872,-562 872,-562 872,-568 866,-574 860,-574 860,-574 566,-574 566,-574 560,-574 554,-568 554,-562 554,-562 554,-504 554,-504 554,-498 560,-492 566,-492"/>
<text text-anchor="middle" x="713" y="-561.45" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">vector</text>
</g>
<g id="clust13" class="cluster">
<title>cluster_src/transform</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M610.25,-306C610.25,-306 831.38,-306 831.38,-306 837.38,-306 843.38,-312 843.38,-318 843.38,-318 843.38,-346 843.38,-346 843.38,-352 837.38,-358 831.38,-358 831.38,-358 610.25,-358 610.25,-358 604.25,-358 598.25,-352 598.25,-346 598.25,-346 598.25,-318 598.25,-318 598.25,-312 604.25,-306 610.25,-306"/>
<text text-anchor="middle" x="720.81" y="-345.45" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">transform</text>
</g>
<!-- bin/smcat.mjs -->
<g id="node1" class="node">
<title>bin/smcat.mjs</title>
<g id="a_node1"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/main/bin/smcat.mjs" xlink:title="no&#45;orphans">
<path fill="#ccffcc" stroke="orange" d="M109.46,-33.88C109.46,-33.88 64.79,-33.88 64.79,-33.88 61.83,-33.88 58.88,-30.92 58.88,-27.96 58.88,-27.96 58.88,-22.04 58.88,-22.04 58.88,-19.08 61.83,-16.12 64.79,-16.12 64.79,-16.12 109.46,-16.12 109.46,-16.12 112.42,-16.12 115.38,-19.08 115.38,-22.04 115.38,-22.04 115.38,-27.96 115.38,-27.96 115.38,-30.92 112.42,-33.88 109.46,-33.88"/>
<text text-anchor="start" x="66.88" y="-21.32" font-family="Helvetica,sans-Serif" font-size="9.00" fill="orange">smcat.mjs</text>
</a>
</g>
</g>
<!-- src/cli/actions.mts -->
<g id="node2" class="node">
<title>src/cli/actions.mts</title>
<g id="a_node2"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/main/src/cli/actions.mts" xlink:title="actions.mts">
<path fill="#ccffcc" stroke="black" d="M249.58,-362.88C249.58,-362.88 199.67,-362.88 199.67,-362.88 196.71,-362.88 193.75,-359.92 193.75,-356.96 193.75,-356.96 193.75,-351.04 193.75,-351.04 193.75,-348.08 196.71,-345.12 199.67,-345.12 199.67,-345.12 249.58,-345.12 249.58,-345.12 252.54,-345.12 255.5,-348.08 255.5,-351.04 255.5,-351.04 255.5,-356.96 255.5,-356.96 255.5,-359.92 252.54,-362.88 249.58,-362.88"/>
<text text-anchor="start" x="201.75" y="-350.32" font-family="Helvetica,sans-Serif" font-size="9.00">actions.mts</text>
</a>
</g>
</g>
<!-- src/index&#45;node.mts -->
<g id="node3" class="node">
<title>src/index&#45;node.mts</title>
<g id="a_node3"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/main/src/index-node.mts" xlink:title="index&#45;node.mts">
<path fill="#ddfeff" stroke="black" d="M388.58,-328.88C388.58,-328.88 321.42,-328.88 321.42,-328.88 318.46,-328.88 315.5,-325.92 315.5,-322.96 315.5,-322.96 315.5,-317.04 315.5,-317.04 315.5,-314.08 318.46,-311.12 321.42,-311.12 321.42,-311.12 388.58,-311.12 388.58,-311.12 391.54,-311.12 394.5,-314.08 394.5,-317.04 394.5,-317.04 394.5,-322.96 394.5,-322.96 394.5,-325.92 391.54,-328.88 388.58,-328.88"/>
<text text-anchor="start" x="323.5" y="-316.32" font-family="Helvetica,sans-Serif" font-size="9.00">index&#45;node.mts</text>
</a>
</g>
</g>
<!-- src/cli/actions.mts&#45;&gt;src/index&#45;node.mts -->
<g id="edge1" class="edge">
<title>src/cli/actions.mts&#45;&gt;src/index&#45;node.mts</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M225,-344.67C225,-333.73 225,-317.04 225,-317.04 225,-317.04 306.26,-317.04 306.26,-317.04"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="306.26,-319.14 312.26,-317.04 306.26,-314.94 306.26,-319.14"/>
</g>
<!-- src/cli/cli.d.ts -->
<g id="node4" class="node">
<title>src/cli/cli.d.ts</title>
<g id="a_node4"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/main/src/cli/cli.d.ts" xlink:title="cli.d.ts">
<path fill="#ccffcc" stroke="none" d="M376.08,-392.88C376.08,-392.88 333.92,-392.88 333.92,-392.88 330.96,-392.88 328,-389.92 328,-386.96 328,-386.96 328,-381.04 328,-381.04 328,-378.08 330.96,-375.12 333.92,-375.12 333.92,-375.12 376.08,-375.12 376.08,-375.12 379.04,-375.12 382,-378.08 382,-381.04 382,-381.04 382,-386.96 382,-386.96 382,-389.92 379.04,-392.88 376.08,-392.88"/>
<text text-anchor="start" x="342.25" y="-380.32" font-family="Helvetica,sans-Serif" font-size="9.00">cli.d.ts</text>
</a>
</g>
</g>
<!-- src/cli/actions.mts&#45;&gt;src/cli/cli.d.ts -->
<g id="edge2" class="edge">
<title>src/cli/actions.mts&#45;&gt;src/cli/cli.d.ts</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M255.81,-356.96C271.41,-356.96 287,-356.96 287,-356.96 287,-356.96 287,-378.68 287,-378.68 287,-378.68 318.71,-378.68 318.71,-378.68"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="318.71,-380.78 324.71,-378.68 318.71,-376.58 318.71,-380.78"/>
</g>
<!-- src/cli/file&#45;name&#45;to&#45;stream.mts -->
<g id="node5" class="node">
<title>src/cli/file&#45;name&#45;to&#45;stream.mts</title>
<g id="a_node5"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/main/src/cli/file-name-to-stream.mts" xlink:title="file&#45;name&#45;to&#45;stream.mts">
<path fill="#ccffcc" stroke="black" d="M405.08,-362.88C405.08,-362.88 304.92,-362.88 304.92,-362.88 301.96,-362.88 299,-359.92 299,-356.96 299,-356.96 299,-351.04 299,-351.04 299,-348.08 301.96,-345.12 304.92,-345.12 304.92,-345.12 405.08,-345.12 405.08,-345.12 408.04,-345.12 411,-348.08 411,-351.04 411,-351.04 411,-356.96 411,-356.96 411,-359.92 408.04,-362.88 405.08,-362.88"/>
<text text-anchor="start" x="307" y="-350.32" font-family="Helvetica,sans-Serif" font-size="9.00">file&#45;name&#45;to&#45;stream.mts</text>
</a>
</g>
</g>
<!-- src/cli/actions.mts&#45;&gt;src/cli/file&#45;name&#45;to&#45;stream.mts -->
<g id="edge3" class="edge">
<title>src/cli/actions.mts&#45;&gt;src/cli/file&#45;name&#45;to&#45;stream.mts</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M255.85,-351.04C255.85,-351.04 289.5,-351.04 289.5,-351.04"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="289.5,-353.14 295.5,-351.04 289.5,-348.94 289.5,-353.14"/>
</g>
<!-- src/options.mts -->
<g id="node10" class="node">
<title>src/options.mts</title>
<g id="a_node10"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/main/src/options.mts" xlink:title="options.mts">
<path fill="#ddfeff" stroke="black" d="M992.21,-403.88C992.21,-403.88 941.54,-403.88 941.54,-403.88 938.58,-403.88 935.62,-400.92 935.62,-397.96 935.62,-397.96 935.62,-392.04 935.62,-392.04 935.62,-389.08 938.58,-386.12 941.54,-386.12 941.54,-386.12 992.21,-386.12 992.21,-386.12 995.17,-386.12 998.12,-389.08 998.12,-392.04 998.12,-392.04 998.12,-397.96 998.12,-397.96 998.12,-400.92 995.17,-403.88 992.21,-403.88"/>
<text text-anchor="start" x="943.62" y="-391.32" font-family="Helvetica,sans-Serif" font-size="9.00">options.mts</text>
</a>
</g>
</g>
<!-- src/index&#45;node.mts&#45;&gt;src/options.mts -->
<g id="edge13" class="edge">
<title>src/index&#45;node.mts&#45;&gt;src/options.mts</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M394.95,-325.19C409.75,-325.19 423,-325.19 423,-325.19 423,-325.19 423,-394.71 423,-394.71 423,-394.71 926.26,-394.71 926.26,-394.71"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="926.26,-396.81 932.26,-394.71 926.26,-392.61 926.26,-396.81"/>
</g>
<!-- src/parse/index.mts -->
<g id="node11" class="node">
<title>src/parse/index.mts</title>
<g id="a_node11"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/main/src/parse/index.mts" xlink:title="index.mts">
<path fill="#ffccff" stroke="black" d="M508.08,-238.88C508.08,-238.88 464.92,-238.88 464.92,-238.88 461.96,-238.88 459,-235.92 459,-232.96 459,-232.96 459,-227.04 459,-227.04 459,-224.08 461.96,-221.12 464.92,-221.12 464.92,-221.12 508.08,-221.12 508.08,-221.12 511.04,-221.12 514,-224.08 514,-227.04 514,-227.04 514,-232.96 514,-232.96 514,-235.92 511.04,-238.88 508.08,-238.88"/>
<text text-anchor="start" x="467" y="-226.32" font-family="Helvetica,sans-Serif" font-size="9.00">index.mts</text>
</a>
</g>
</g>
<!-- src/index&#45;node.mts&#45;&gt;src/parse/index.mts -->
<g id="edge14" class="edge">
<title>src/index&#45;node.mts&#45;&gt;src/parse/index.mts</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M391,-310.69C391,-288.23 391,-232.96 391,-232.96 391,-232.96 449.59,-232.96 449.59,-232.96"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="449.59,-235.06 455.59,-232.96 449.59,-230.86 449.59,-235.06"/>
</g>
<!-- src/render/index&#45;node.mts -->
<g id="node12" class="node">
<title>src/render/index&#45;node.mts</title>
<g id="a_node12"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/main/src/render/index-node.mts" xlink:title="index&#45;node.mts">
<path fill="#ccccff" stroke="black" d="M520.08,-547.88C520.08,-547.88 452.92,-547.88 452.92,-547.88 449.96,-547.88 447,-544.92 447,-541.96 447,-541.96 447,-536.04 447,-536.04 447,-533.08 449.96,-530.12 452.92,-530.12 452.92,-530.12 520.08,-530.12 520.08,-530.12 523.04,-530.12 526,-533.08 526,-536.04 526,-536.04 526,-541.96 526,-541.96 526,-544.92 523.04,-547.88 520.08,-547.88"/>
<text text-anchor="start" x="455" y="-535.33" font-family="Helvetica,sans-Serif" font-size="9.00">index&#45;node.mts</text>
</a>
</g>
</g>
<!-- src/index&#45;node.mts&#45;&gt;src/render/index&#45;node.mts -->
<g id="edge15" class="edge">
<title>src/index&#45;node.mts&#45;&gt;src/render/index&#45;node.mts</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M394.73,-321.5C421.52,-321.5 452,-321.5 452,-321.5 452,-321.5 452,-520.63 452,-520.63"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="449.9,-520.63 452,-526.63 454.1,-520.63 449.9,-520.63"/>
</g>
<!-- src/transform/desugar.mts -->
<g id="node13" class="node">
<title>src/transform/desugar.mts</title>
<g id="a_node13"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/main/src/transform/desugar.mts" xlink:title="desugar.mts">
<path fill="#ddfeff" stroke="black" d="M666.58,-331.88C666.58,-331.88 612.17,-331.88 612.17,-331.88 609.21,-331.88 606.25,-328.92 606.25,-325.96 606.25,-325.96 606.25,-320.04 606.25,-320.04 606.25,-317.08 609.21,-314.12 612.17,-314.12 612.17,-314.12 666.58,-314.12 666.58,-314.12 669.54,-314.12 672.5,-317.08 672.5,-320.04 672.5,-320.04 672.5,-325.96 672.5,-325.96 672.5,-328.92 669.54,-331.88 666.58,-331.88"/>
<text text-anchor="start" x="614.25" y="-319.32" font-family="Helvetica,sans-Serif" font-size="9.00">desugar.mts</text>
</a>
</g>
</g>
<!-- src/index&#45;node.mts&#45;&gt;src/transform/desugar.mts -->
<g id="edge16" class="edge">
<title>src/index&#45;node.mts&#45;&gt;src/transform/desugar.mts</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M387,-310.76C387,-307.67 387,-305 387,-305 387,-305 631,-305 631,-305 631,-305 631,-305.9 631,-305.9"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="628.9,-304.97 631,-310.97 633.1,-304.97 628.9,-304.97"/>
</g>
<!-- src/version.mts -->
<g id="node14" class="node">
<title>src/version.mts</title>
<g id="a_node14"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/main/src/version.mts" xlink:title="version.mts">
<path fill="#ddfeff" stroke="black" d="M511.83,-331.88C511.83,-331.88 461.17,-331.88 461.17,-331.88 458.21,-331.88 455.25,-328.92 455.25,-325.96 455.25,-325.96 455.25,-320.04 455.25,-320.04 455.25,-317.08 458.21,-314.12 461.17,-314.12 461.17,-314.12 511.83,-314.12 511.83,-314.12 514.79,-314.12 517.75,-317.08 517.75,-320.04 517.75,-320.04 517.75,-325.96 517.75,-325.96 517.75,-328.92 514.79,-331.88 511.83,-331.88"/>
<text text-anchor="start" x="463.25" y="-319.32" font-family="Helvetica,sans-Serif" font-size="9.00">version.mts</text>
</a>
</g>
</g>
<!-- src/index&#45;node.mts&#45;&gt;src/version.mts -->
<g id="edge17" class="edge">
<title>src/index&#45;node.mts&#45;&gt;src/version.mts</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M394.81,-317.81C394.81,-317.81 446.14,-317.81 446.14,-317.81"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="446.14,-319.91 452.14,-317.81 446.14,-315.71 446.14,-319.91"/>
</g>
<!-- src/cli/attributes&#45;parser.mjs -->
<g id="node6" class="node">
<title>src/cli/attributes&#45;parser.mjs</title>
<g id="a_node6"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/main/src/cli/attributes-parser.mjs" xlink:title="attributes&#45;parser.mjs">
<polygon fill="#ccffcc" stroke="gray" points="404.62,-422.88 305.38,-422.88 305.38,-405.12 404.62,-405.12 404.62,-422.88"/>
<text text-anchor="start" x="313.38" y="-410.32" font-family="Helvetica,sans-Serif" font-size="9.00">attributes&#45;parser.mjs</text>
</a>
</g>
</g>
<!-- src/cli/execute&#45;command&#45;line.mts -->
<g id="node7" class="node">
<title>src/cli/execute&#45;command&#45;line.mts</title>
<g id="a_node7"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/main/src/cli/execute-command-line.mts" xlink:title="execute&#45;command&#45;line.mts">
<path fill="#ccffcc" stroke="black" d="M144.33,-392.88C144.33,-392.88 29.92,-392.88 29.92,-392.88 26.96,-392.88 24,-389.92 24,-386.96 24,-386.96 24,-381.04 24,-381.04 24,-378.08 26.96,-375.12 29.92,-375.12 29.92,-375.12 144.33,-375.12 144.33,-375.12 147.29,-375.12 150.25,-378.08 150.25,-381.04 150.25,-381.04 150.25,-386.96 150.25,-386.96 150.25,-389.92 147.29,-392.88 144.33,-392.88"/>
<text text-anchor="start" x="32" y="-380.32" font-family="Helvetica,sans-Serif" font-size="9.00">execute&#45;command&#45;line.mts</text>
</a>
</g>
</g>
<!-- src/cli/execute&#45;command&#45;line.mts&#45;&gt;src/cli/actions.mts -->
<g id="edge4" class="edge">
<title>src/cli/execute&#45;command&#45;line.mts&#45;&gt;src/cli/actions.mts</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M133,-374.84C133,-366.01 133,-354 133,-354 133,-354 184.32,-354 184.32,-354"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="184.32,-356.1 190.32,-354 184.32,-351.9 184.32,-356.1"/>
</g>
<!-- src/cli/normalize.mts -->
<g id="node8" class="node">
<title>src/cli/normalize.mts</title>
<g id="a_node8"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/main/src/cli/normalize.mts" xlink:title="normalize.mts">
<path fill="#ccffcc" stroke="black" d="M255.21,-422.88C255.21,-422.88 194.04,-422.88 194.04,-422.88 191.08,-422.88 188.12,-419.92 188.12,-416.96 188.12,-416.96 188.12,-411.04 188.12,-411.04 188.12,-408.08 191.08,-405.12 194.04,-405.12 194.04,-405.12 255.21,-405.12 255.21,-405.12 258.17,-405.12 261.12,-408.08 261.12,-411.04 261.12,-411.04 261.12,-416.96 261.12,-416.96 261.12,-419.92 258.17,-422.88 255.21,-422.88"/>
<text text-anchor="start" x="196.12" y="-410.32" font-family="Helvetica,sans-Serif" font-size="9.00">normalize.mts</text>
</a>
</g>
</g>
<!-- src/cli/execute&#45;command&#45;line.mts&#45;&gt;src/cli/normalize.mts -->
<g id="edge5" class="edge">
<title>src/cli/execute&#45;command&#45;line.mts&#45;&gt;src/cli/normalize.mts</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M88,-393.16C88,-401.99 88,-414 88,-414 88,-414 178.63,-414 178.63,-414"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="178.63,-416.1 184.63,-414 178.63,-411.9 178.63,-416.1"/>
</g>
<!-- src/cli/validations.mts -->
<g id="node9" class="node">
<title>src/cli/validations.mts</title>
<g id="a_node9"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/main/src/cli/validations.mts" xlink:title="validations.mts">
<path fill="#ccffcc" stroke="black" d="M257.08,-392.88C257.08,-392.88 192.17,-392.88 192.17,-392.88 189.21,-392.88 186.25,-389.92 186.25,-386.96 186.25,-386.96 186.25,-381.04 186.25,-381.04 186.25,-378.08 189.21,-375.12 192.17,-375.12 192.17,-375.12 257.08,-375.12 257.08,-375.12 260.04,-375.12 263,-378.08 263,-381.04 263,-381.04 263,-386.96 263,-386.96 263,-389.92 260.04,-392.88 257.08,-392.88"/>
<text text-anchor="start" x="194.25" y="-380.32" font-family="Helvetica,sans-Serif" font-size="9.00">validations.mts</text>
</a>
</g>
</g>
<!-- src/cli/execute&#45;command&#45;line.mts&#45;&gt;src/cli/validations.mts -->
<g id="edge6" class="edge">
<title>src/cli/execute&#45;command&#45;line.mts&#45;&gt;src/cli/validations.mts</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M150.64,-384C150.64,-384 177.07,-384 177.07,-384"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="177.07,-386.1 183.07,-384 177.07,-381.9 177.07,-386.1"/>
</g>
<!-- src/cli/normalize.mts&#45;&gt;src/cli/cli.d.ts -->
<g id="edge9" class="edge">
<title>src/cli/normalize.mts&#45;&gt;src/cli/cli.d.ts</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M261.5,-411.04C269.18,-411.04 275,-411.04 275,-411.04 275,-411.04 275,-385.77 275,-385.77 275,-385.77 318.89,-385.77 318.89,-385.77"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="318.89,-387.88 324.89,-385.78 318.89,-383.68 318.89,-387.88"/>
</g>
<!-- src/cli/normalize.mts&#45;&gt;src/cli/attributes&#45;parser.mjs -->
<g id="edge8" class="edge">
<title>src/cli/normalize.mts&#45;&gt;src/cli/attributes&#45;parser.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M261.29,-416.96C261.29,-416.96 295.97,-416.96 295.97,-416.96"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="295.97,-419.06 301.97,-416.96 295.97,-414.86 295.97,-419.06"/>
</g>
<!-- src/cli/normalize.mts&#45;&gt;src/options.mts -->
<g id="edge7" class="edge">
<title>src/cli/normalize.mts&#45;&gt;src/options.mts</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M225,-404.86C225,-400.64 225,-396.54 225,-396.54 225,-396.54 926.44,-396.54 926.44,-396.54"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="926.44,-398.64 932.44,-396.54 926.44,-394.44 926.44,-398.64"/>
</g>
<!-- src/cli/validations.mts&#45;&gt;src/index&#45;node.mts -->
<g id="edge10" class="edge">
<title>src/cli/validations.mts&#45;&gt;src/index&#45;node.mts</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M260,-374.73C260,-357.65 260,-322.96 260,-322.96 260,-322.96 306.23,-322.96 306.23,-322.96"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="306.23,-325.06 312.23,-322.96 306.23,-320.86 306.23,-325.06"/>
</g>
<!-- src/cli/validations.mts&#45;&gt;src/cli/cli.d.ts -->
<g id="edge12" class="edge">
<title>src/cli/validations.mts&#45;&gt;src/cli/cli.d.ts</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M263.39,-382.23C263.39,-382.23 318.73,-382.23 318.73,-382.23"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="318.73,-384.33 324.73,-382.23 318.73,-380.13 318.73,-384.33"/>
</g>
<!-- src/cli/validations.mts&#45;&gt;src/cli/attributes&#45;parser.mjs -->
<g id="edge11" class="edge">
<title>src/cli/validations.mts&#45;&gt;src/cli/attributes&#45;parser.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M263.27,-389.32C288.58,-389.32 317,-389.32 317,-389.32 317,-389.32 317,-395.78 317,-395.78"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="314.9,-395.78 317,-401.78 319.1,-395.78 314.9,-395.78"/>
</g>
<!-- src/parse/index.mts&#45;&gt;src/options.mts -->
<g id="edge23" class="edge">
<title>src/parse/index.mts&#45;&gt;src/options.mts</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M514.22,-234.54C617.77,-234.54 976,-234.54 976,-234.54 976,-234.54 976,-376.89 976,-376.89"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="973.9,-376.89 976,-382.89 978.1,-376.89 973.9,-376.89"/>
</g>
<!-- src/parse/scxml/index.mjs -->
<g id="node17" class="node">
<title>src/parse/scxml/index.mjs</title>
<g id="a_node17"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/main/src/parse/scxml/index.mjs" xlink:title="index.mjs">
<path fill="#ffccff" stroke="black" d="M660.96,-225.88C660.96,-225.88 617.79,-225.88 617.79,-225.88 614.83,-225.88 611.88,-222.92 611.88,-219.96 611.88,-219.96 611.88,-214.04 611.88,-214.04 611.88,-211.08 614.83,-208.12 617.79,-208.12 617.79,-208.12 660.96,-208.12 660.96,-208.12 663.92,-208.12 666.88,-211.08 666.88,-214.04 666.88,-214.04 666.88,-219.96 666.88,-219.96 666.88,-222.92 663.92,-225.88 660.96,-225.88"/>
<text text-anchor="start" x="619.88" y="-213.32" font-family="Helvetica,sans-Serif" font-size="9.00">index.mjs</text>
</a>
</g>
</g>
<!-- src/parse/index.mts&#45;&gt;src/parse/scxml/index.mjs -->
<g id="edge24" class="edge">
<title>src/parse/index.mts&#45;&gt;src/parse/scxml/index.mjs</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M496,-220.88C496,-217.57 496,-214.62 496,-214.62 496,-214.62 602.36,-214.62 602.36,-214.62"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="602.36,-216.73 608.36,-214.63 602.36,-212.53 602.36,-216.73"/>
</g>
<!-- src/parse/smcat&#45;ast.schema.mts -->
<g id="node18" class="node">
<title>src/parse/smcat&#45;ast.schema.mts</title>
<g id="a_node18"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/main/src/parse/smcat-ast.schema.mts" xlink:title="smcat&#45;ast.schema.mts">
<path fill="#ffccff" stroke="black" d="M686.46,-161.88C686.46,-161.88 592.29,-161.88 592.29,-161.88 589.33,-161.88 586.38,-158.92 586.38,-155.96 586.38,-155.96 586.38,-150.04 586.38,-150.04 586.38,-147.08 589.33,-144.12 592.29,-144.12 592.29,-144.12 686.46,-144.12 686.46,-144.12 689.42,-144.12 692.38,-147.08 692.38,-150.04 692.38,-150.04 692.38,-155.96 692.38,-155.96 692.38,-158.92 689.42,-161.88 686.46,-161.88"/>
<text text-anchor="start" x="594.38" y="-149.32" font-family="Helvetica,sans-Serif" font-size="9.00">smcat&#45;ast.schema.mts</text>
</a>
</g>
</g>
<!-- src/parse/index.mts&#45;&gt;src/parse/smcat&#45;ast.schema.mts -->
<g id="edge25" class="edge">
<title>src/parse/index.mts&#45;&gt;src/parse/smcat&#45;ast.schema.mts</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M514.38,-230.21C547.12,-230.21 597,-230.21 597,-230.21 597,-230.21 597,-171.19 597,-171.19"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="599.1,-171.19 597,-165.19 594.9,-171.19 599.1,-171.19"/>
</g>
<!-- src/parse/smcat/smcat&#45;parser.mjs -->
<g id="node19" class="node">
<title>src/parse/smcat/smcat&#45;parser.mjs</title>
<g id="a_node19"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/main/src/parse/smcat/smcat-parser.mjs" xlink:title="smcat&#45;parser.mjs">
<polygon fill="#ffccff" stroke="gray" points="682.25,-109.88 596.5,-109.88 596.5,-92.12 682.25,-92.12 682.25,-109.88"/>
<text text-anchor="start" x="604.5" y="-97.33" font-family="Helvetica,sans-Serif" font-size="9.00">smcat&#45;parser.mjs</text>
</a>
</g>
</g>
<!-- src/parse/index.mts&#45;&gt;src/parse/smcat/smcat&#45;parser.mjs -->
<g id="edge26" class="edge">
<title>src/parse/index.mts&#45;&gt;src/parse/smcat/smcat&#45;parser.mjs</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M478,-220.72C478,-191.14 478,-101 478,-101 478,-101 587.1,-101 587.1,-101"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="587.1,-103.1 593.1,-101 587.1,-98.9 587.1,-103.1"/>
</g>
<!-- src/render/dot/index.mjs -->
<g id="node31" class="node">
<title>src/render/dot/index.mjs</title>
<g id="a_node31"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/main/src/render/dot/index.mjs" xlink:title="index.mjs">
<path fill="#ccccff" stroke="black" d="M829.96,-613.88C829.96,-613.88 786.79,-613.88 786.79,-613.88 783.83,-613.88 780.88,-610.92 780.88,-607.96 780.88,-607.96 780.88,-602.04 780.88,-602.04 780.88,-599.08 783.83,-596.12 786.79,-596.12 786.79,-596.12 829.96,-596.12 829.96,-596.12 832.92,-596.12 835.88,-599.08 835.88,-602.04 835.88,-602.04 835.88,-607.96 835.88,-607.96 835.88,-610.92 832.92,-613.88 829.96,-613.88"/>
<text text-anchor="start" x="788.88" y="-601.33" font-family="Helvetica,sans-Serif" font-size="9.00">index.mjs</text>
</a>
</g>
</g>
<!-- src/render/index&#45;node.mts&#45;&gt;src/render/dot/index.mjs -->
<g id="edge50" class="edge">
<title>src/render/index&#45;node.mts&#45;&gt;src/render/dot/index.mjs</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M507,-548.32C507,-567.66 507,-610.33 507,-610.33 507,-610.33 771.54,-610.33 771.54,-610.33"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="771.54,-612.43 777.54,-610.33 771.54,-608.23 771.54,-612.43"/>
</g>
<!-- src/render/scjson/index.mts -->
<g id="node36" class="node">
<title>src/render/scjson/index.mts</title>
<g id="a_node36"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/main/src/render/scjson/index.mts" xlink:title="index.mts">
<path fill="#ccccff" stroke="black" d="M829.96,-801.88C829.96,-801.88 786.79,-801.88 786.79,-801.88 783.83,-801.88 780.88,-798.92 780.88,-795.96 780.88,-795.96 780.88,-790.04 780.88,-790.04 780.88,-787.08 783.83,-784.12 786.79,-784.12 786.79,-784.12 829.96,-784.12 829.96,-784.12 832.92,-784.12 835.88,-787.08 835.88,-790.04 835.88,-790.04 835.88,-795.96 835.88,-795.96 835.88,-798.92 832.92,-801.88 829.96,-801.88"/>
<text text-anchor="start" x="788.88" y="-789.33" font-family="Helvetica,sans-Serif" font-size="9.00">index.mts</text>
</a>
</g>
</g>
<!-- src/render/index&#45;node.mts&#45;&gt;src/render/scjson/index.mts -->
<g id="edge51" class="edge">
<title>src/render/index&#45;node.mts&#45;&gt;src/render/scjson/index.mts</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M487,-548.34C487,-594.17 487,-793 487,-793 487,-793 771.39,-793 771.39,-793"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="771.39,-795.1 777.39,-793 771.39,-790.9 771.39,-795.1"/>
</g>
<!-- src/render/scxml/index.mts -->
<g id="node37" class="node">
<title>src/render/scxml/index.mts</title>
<g id="a_node37"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/main/src/render/scxml/index.mts" xlink:title="index.mts">
<path fill="#ccccff" stroke="black" d="M660.96,-921.88C660.96,-921.88 617.79,-921.88 617.79,-921.88 614.83,-921.88 611.88,-918.92 611.88,-915.96 611.88,-915.96 611.88,-910.04 611.88,-910.04 611.88,-907.08 614.83,-904.12 617.79,-904.12 617.79,-904.12 660.96,-904.12 660.96,-904.12 663.92,-904.12 666.88,-907.08 666.88,-910.04 666.88,-910.04 666.88,-915.96 666.88,-915.96 666.88,-918.92 663.92,-921.88 660.96,-921.88"/>
<text text-anchor="start" x="619.88" y="-909.33" font-family="Helvetica,sans-Serif" font-size="9.00">index.mts</text>
</a>
</g>
</g>
<!-- src/render/index&#45;node.mts&#45;&gt;src/render/scxml/index.mts -->
<g id="edge52" class="edge">
<title>src/render/index&#45;node.mts&#45;&gt;src/render/scxml/index.mts</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M467,-548.32C467,-606.37 467,-915.96 467,-915.96 467,-915.96 602.65,-915.96 602.65,-915.96"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="602.65,-918.06 608.65,-915.96 602.65,-913.86 602.65,-918.06"/>
</g>
<!-- src/render/smcat/index.mts -->
<g id="node38" class="node">
<title>src/render/smcat/index.mts</title>
<g id="a_node38"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/main/src/render/smcat/index.mts" xlink:title="index.mts">
<path fill="#ccccff" stroke="black" d="M660.96,-457.88C660.96,-457.88 617.79,-457.88 617.79,-457.88 614.83,-457.88 611.88,-454.92 611.88,-451.96 611.88,-451.96 611.88,-446.04 611.88,-446.04 611.88,-443.08 614.83,-440.12 617.79,-440.12 617.79,-440.12 660.96,-440.12 660.96,-440.12 663.92,-440.12 666.88,-443.08 666.88,-446.04 666.88,-446.04 666.88,-451.96 666.88,-451.96 666.88,-454.92 663.92,-457.88 660.96,-457.88"/>
<text text-anchor="start" x="619.88" y="-445.32" font-family="Helvetica,sans-Serif" font-size="9.00">index.mts</text>
</a>
</g>
</g>
<!-- src/render/index&#45;node.mts&#45;&gt;src/render/smcat/index.mts -->
<g id="edge53" class="edge">
<title>src/render/index&#45;node.mts&#45;&gt;src/render/smcat/index.mts</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M521,-529.69C521,-507.23 521,-451.96 521,-451.96 521,-451.96 602.59,-451.96 602.59,-451.96"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="602.59,-454.06 608.59,-451.96 602.59,-449.86 602.59,-454.06"/>
</g>
<!-- src/render/vector/vector&#45;native&#45;dot&#45;with&#45;fallback.mts -->
<g id="node39" class="node">
<title>src/render/vector/vector&#45;native&#45;dot&#45;with&#45;fallback.mts</title>
<g id="a_node39"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/main/src/render/vector/vector-native-dot-with-fallback.mts" xlink:title="vector&#45;native&#45;dot&#45;with&#45;fallback.mts">
<path fill="#ccccff" stroke="black" d="M710.83,-547.88C710.83,-547.88 567.92,-547.88 567.92,-547.88 564.96,-547.88 562,-544.92 562,-541.96 562,-541.96 562,-536.04 562,-536.04 562,-533.08 564.96,-530.12 567.92,-530.12 567.92,-530.12 710.83,-530.12 710.83,-530.12 713.79,-530.12 716.75,-533.08 716.75,-536.04 716.75,-536.04 716.75,-541.96 716.75,-541.96 716.75,-544.92 713.79,-547.88 710.83,-547.88"/>
<text text-anchor="start" x="570" y="-535.33" font-family="Helvetica,sans-Serif" font-size="9.00">vector&#45;native&#45;dot&#45;with&#45;fallback.mts</text>
</a>
</g>
</g>
<!-- src/render/index&#45;node.mts&#45;&gt;src/render/vector/vector&#45;native&#45;dot&#45;with&#45;fallback.mts -->
<g id="edge54" class="edge">
<title>src/render/index&#45;node.mts&#45;&gt;src/render/vector/vector&#45;native&#45;dot&#45;with&#45;fallback.mts</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M526.27,-539C526.27,-539 552.53,-539 552.53,-539"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="552.53,-541.1 558.53,-539 552.53,-536.9 552.53,-541.1"/>
</g>
<!-- src/render/vector/vector&#45;with&#45;wasm.mts -->
<g id="node40" class="node">
<title>src/render/vector/vector&#45;with&#45;wasm.mts</title>
<g id="a_node40"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/main/src/render/vector/vector-with-wasm.mts" xlink:title="vector&#45;with&#45;wasm.mts">
<path fill="#ccccff" stroke="black" d="M685.33,-517.88C685.33,-517.88 593.42,-517.88 593.42,-517.88 590.46,-517.88 587.5,-514.92 587.5,-511.96 587.5,-511.96 587.5,-506.04 587.5,-506.04 587.5,-503.08 590.46,-500.12 593.42,-500.12 593.42,-500.12 685.33,-500.12 685.33,-500.12 688.29,-500.12 691.25,-503.08 691.25,-506.04 691.25,-506.04 691.25,-511.96 691.25,-511.96 691.25,-514.92 688.29,-517.88 685.33,-517.88"/>
<text text-anchor="start" x="595.5" y="-505.32" font-family="Helvetica,sans-Serif" font-size="9.00">vector&#45;with&#45;wasm.mts</text>
</a>
</g>
</g>
<!-- src/render/index&#45;node.mts&#45;&gt;src/render/vector/vector&#45;with&#45;wasm.mts -->
<g id="edge55" class="edge">
<title>src/render/index&#45;node.mts&#45;&gt;src/render/vector/vector&#45;with&#45;wasm.mts</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M524,-529.76C524,-522.97 524,-514.92 524,-514.92 524,-514.92 578.06,-514.92 578.06,-514.92"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="578.06,-517.02 584.06,-514.92 578.06,-512.82 578.06,-517.02"/>
</g>
<!-- src/state&#45;machine&#45;model.mts -->
<g id="node21" class="node">
<title>src/state&#45;machine&#45;model.mts</title>
<g id="a_node21"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/main/src/state-machine-model.mts" xlink:title="state&#45;machine&#45;model.mts">
<path fill="#ddfeff" stroke="black" d="M1320.08,-567.88C1320.08,-567.88 1213.17,-567.88 1213.17,-567.88 1210.21,-567.88 1207.25,-564.92 1207.25,-561.96 1207.25,-561.96 1207.25,-556.04 1207.25,-556.04 1207.25,-553.08 1210.21,-550.12 1213.17,-550.12 1213.17,-550.12 1320.08,-550.12 1320.08,-550.12 1323.04,-550.12 1326,-553.08 1326,-556.04 1326,-556.04 1326,-561.96 1326,-561.96 1326,-564.92 1323.04,-567.88 1320.08,-567.88"/>
<text text-anchor="start" x="1215.25" y="-555.33" font-family="Helvetica,sans-Serif" font-size="9.00">state&#45;machine&#45;model.mts</text>
</a>
</g>
</g>
<!-- src/transform/desugar.mts&#45;&gt;src/state&#45;machine&#45;model.mts -->
<g id="edge75" class="edge">
<title>src/transform/desugar.mts&#45;&gt;src/state&#45;machine&#45;model.mts</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M672.82,-325.96C700.4,-325.96 735,-325.96 735,-325.96 735,-325.96 735,-554.56 735,-554.56 735,-554.56 1197.9,-554.56 1197.9,-554.56"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="1197.9,-556.66 1203.9,-554.56 1197.9,-552.46 1197.9,-556.66"/>
</g>
<!-- src/transform/utl.mts -->
<g id="node22" class="node">
<title>src/transform/utl.mts</title>
<g id="a_node22"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/main/src/transform/utl.mts" xlink:title="utl.mts">
<path fill="#ddfeff" stroke="black" d="M829.46,-331.88C829.46,-331.88 787.29,-331.88 787.29,-331.88 784.33,-331.88 781.38,-328.92 781.38,-325.96 781.38,-325.96 781.38,-320.04 781.38,-320.04 781.38,-317.08 784.33,-314.12 787.29,-314.12 787.29,-314.12 829.46,-314.12 829.46,-314.12 832.42,-314.12 835.38,-317.08 835.38,-320.04 835.38,-320.04 835.38,-325.96 835.38,-325.96 835.38,-328.92 832.42,-331.88 829.46,-331.88"/>
<text text-anchor="start" x="795.25" y="-319.32" font-family="Helvetica,sans-Serif" font-size="9.00">utl.mts</text>
</a>
</g>
</g>
<!-- src/transform/desugar.mts&#45;&gt;src/transform/utl.mts -->
<g id="edge76" class="edge">
<title>src/transform/desugar.mts&#45;&gt;src/transform/utl.mts</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M672.76,-320.04C672.76,-320.04 771.89,-320.04 771.89,-320.04"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="771.89,-322.14 777.89,-320.04 771.89,-317.94 771.89,-322.14"/>
</g>
<!-- src/index.mts -->
<g id="node15" class="node">
<title>src/index.mts</title>
<g id="a_node15"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/main/src/index.mts" xlink:title="index.mts">
<path fill="#ddfeff" stroke="black" d="M376.58,-298.88C376.58,-298.88 333.42,-298.88 333.42,-298.88 330.46,-298.88 327.5,-295.92 327.5,-292.96 327.5,-292.96 327.5,-287.04 327.5,-287.04 327.5,-284.08 330.46,-281.12 333.42,-281.12 333.42,-281.12 376.58,-281.12 376.58,-281.12 379.54,-281.12 382.5,-284.08 382.5,-287.04 382.5,-287.04 382.5,-292.96 382.5,-292.96 382.5,-295.92 379.54,-298.88 376.58,-298.88"/>
<text text-anchor="start" x="335.5" y="-286.32" font-family="Helvetica,sans-Serif" font-size="9.00">index.mts</text>
</a>
</g>
</g>
<!-- src/index.mts&#45;&gt;src/options.mts -->
<g id="edge18" class="edge">
<title>src/index.mts&#45;&gt;src/options.mts</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M382.87,-284.68C501.47,-284.68 958,-284.68 958,-284.68 958,-284.68 958,-376.94 958,-376.94"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="955.9,-376.94 958,-382.94 960.1,-376.94 955.9,-376.94"/>
</g>
<!-- src/index.mts&#45;&gt;src/parse/index.mts -->
<g id="edge19" class="edge">
<title>src/index.mts&#45;&gt;src/parse/index.mts</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M355,-280.71C355,-263.2 355,-227.04 355,-227.04 355,-227.04 449.59,-227.04 449.59,-227.04"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="449.59,-229.14 455.59,-227.04 449.59,-224.94 449.59,-229.14"/>
</g>
<!-- src/index.mts&#45;&gt;src/transform/desugar.mts -->
<g id="edge21" class="edge">
<title>src/index.mts&#45;&gt;src/transform/desugar.mts</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M382.92,-288.23C456.31,-288.23 649,-288.23 649,-288.23 649,-288.23 649,-304.84 649,-304.84"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="646.9,-304.84 649,-310.84 651.1,-304.84 646.9,-304.84"/>
</g>
<!-- src/index.mts&#45;&gt;src/version.mts -->
<g id="edge22" class="edge">
<title>src/index.mts&#45;&gt;src/version.mts</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M382.99,-291.77C421.74,-291.77 487,-291.77 487,-291.77 487,-291.77 487,-304.77 487,-304.77"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="484.9,-304.77 487,-310.77 489.1,-304.77 484.9,-304.77"/>
</g>
<!-- src/render/index.mts -->
<g id="node16" class="node">
<title>src/render/index.mts</title>
<g id="a_node16"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/main/src/render/index.mts" xlink:title="index.mts">
<path fill="#ccccff" stroke="black" d="M508.08,-517.88C508.08,-517.88 464.92,-517.88 464.92,-517.88 461.96,-517.88 459,-514.92 459,-511.96 459,-511.96 459,-506.04 459,-506.04 459,-503.08 461.96,-500.12 464.92,-500.12 464.92,-500.12 508.08,-500.12 508.08,-500.12 511.04,-500.12 514,-503.08 514,-506.04 514,-506.04 514,-511.96 514,-511.96 514,-514.92 511.04,-517.88 508.08,-517.88"/>
<text text-anchor="start" x="467" y="-505.32" font-family="Helvetica,sans-Serif" font-size="9.00">index.mts</text>
</a>
</g>
</g>
<!-- src/index.mts&#45;&gt;src/render/index.mts -->
<g id="edge20" class="edge">
<title>src/index.mts&#45;&gt;src/render/index.mts</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M382.98,-295.32C406.05,-295.32 435,-295.32 435,-295.32 435,-295.32 435,-509 435,-509 435,-509 449.61,-509 449.61,-509"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="449.61,-511.1 455.61,-509 449.61,-506.9 449.61,-511.1"/>
</g>
<!-- src/render/index.mts&#45;&gt;src/render/dot/index.mjs -->
<g id="edge56" class="edge">
<title>src/render/index.mts&#45;&gt;src/render/dot/index.mjs</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M514.32,-506.04C532.54,-506.04 553,-506.04 553,-506.04 553,-506.04 553,-606.77 553,-606.77 553,-606.77 771.53,-606.77 771.53,-606.77"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="771.53,-608.88 777.53,-606.78 771.53,-604.68 771.53,-608.88"/>
</g>
<!-- src/render/index.mts&#45;&gt;src/render/scjson/index.mts -->
<g id="edge57" class="edge">
<title>src/render/index.mts&#45;&gt;src/render/scjson/index.mts</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M514.24,-509C528.94,-509 544,-509 544,-509 544,-509 544,-788.56 544,-788.56 544,-788.56 771.55,-788.56 771.55,-788.56"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="771.55,-790.66 777.55,-788.56 771.55,-786.46 771.55,-790.66"/>
</g>
<!-- src/render/index.mts&#45;&gt;src/render/scxml/index.mts -->
<g id="edge58" class="edge">
<title>src/render/index.mts&#45;&gt;src/render/scxml/index.mts</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M514.43,-511.96C525.21,-511.96 535,-511.96 535,-511.96 535,-511.96 535,-910.04 535,-910.04 535,-910.04 602.38,-910.04 602.38,-910.04"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="602.38,-912.14 608.38,-910.04 602.38,-907.94 602.38,-912.14"/>
</g>
<!-- src/render/index.mts&#45;&gt;src/render/smcat/index.mts -->
<g id="edge59" class="edge">
<title>src/render/index.mts&#45;&gt;src/render/smcat/index.mts</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M487,-499.71C487,-482.2 487,-446.04 487,-446.04 487,-446.04 602.4,-446.04 602.4,-446.04"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="602.4,-448.14 608.4,-446.04 602.4,-443.94 602.4,-448.14"/>
</g>
<!-- src/render/index.mts&#45;&gt;src/render/vector/vector&#45;with&#45;wasm.mts -->
<g id="edge60" class="edge">
<title>src/render/index.mts&#45;&gt;src/render/vector/vector&#45;with&#45;wasm.mts</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M514.18,-503.08C514.18,-503.08 578.13,-503.08 578.13,-503.08"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="578.13,-505.18 584.13,-503.08 578.13,-500.98 578.13,-505.18"/>
</g>
<!-- src/parse/parser&#45;helpers.mts -->
<g id="node20" class="node">
<title>src/parse/parser&#45;helpers.mts</title>
<g id="a_node20"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/main/src/parse/parser-helpers.mts" xlink:title="parser&#45;helpers.mts">
<path fill="#ffccff" stroke="black" d="M848.71,-161.88C848.71,-161.88 768.04,-161.88 768.04,-161.88 765.08,-161.88 762.12,-158.92 762.12,-155.96 762.12,-155.96 762.12,-150.04 762.12,-150.04 762.12,-147.08 765.08,-144.12 768.04,-144.12 768.04,-144.12 848.71,-144.12 848.71,-144.12 851.67,-144.12 854.62,-147.08 854.62,-150.04 854.62,-150.04 854.62,-155.96 854.62,-155.96 854.62,-158.92 851.67,-161.88 848.71,-161.88"/>
<text text-anchor="start" x="770.12" y="-149.32" font-family="Helvetica,sans-Serif" font-size="9.00">parser&#45;helpers.mts</text>
</a>
</g>
</g>
<!-- src/parse/scxml/index.mjs&#45;&gt;src/parse/parser&#45;helpers.mts -->
<g id="edge29" class="edge">
<title>src/parse/scxml/index.mjs&#45;&gt;src/parse/parser&#45;helpers.mts</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M667.14,-211.08C698.13,-211.08 744,-211.08 744,-211.08 744,-211.08 744,-153 744,-153 744,-153 752.9,-153 752.9,-153"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="752.9,-155.1 758.9,-153 752.9,-150.9 752.9,-155.1"/>
</g>
<!-- src/parse/scxml/index.mjs&#45;&gt;src/transform/utl.mts -->
<g id="edge28" class="edge">
<title>src/parse/scxml/index.mjs&#45;&gt;src/transform/utl.mts</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M667.01,-222.92C715.07,-222.92 809,-222.92 809,-222.92 809,-222.92 809,-304.74 809,-304.74"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="806.9,-304.74 809,-310.74 811.1,-304.74 806.9,-304.74"/>
</g>
<!-- src/parse/scxml/normalize&#45;machine.mts -->
<g id="node23" class="node">
<title>src/parse/scxml/normalize&#45;machine.mts</title>
<g id="a_node23"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/main/src/parse/scxml/normalize-machine.mts" xlink:title="normalize&#45;machine.mts">
<path fill="#ffccff" stroke="black" d="M858.08,-203.88C858.08,-203.88 758.67,-203.88 758.67,-203.88 755.71,-203.88 752.75,-200.92 752.75,-197.96 752.75,-197.96 752.75,-192.04 752.75,-192.04 752.75,-189.08 755.71,-186.12 758.67,-186.12 758.67,-186.12 858.08,-186.12 858.08,-186.12 861.04,-186.12 864,-189.08 864,-192.04 864,-192.04 864,-197.96 864,-197.96 864,-200.92 861.04,-203.88 858.08,-203.88"/>
<text text-anchor="start" x="760.75" y="-191.32" font-family="Helvetica,sans-Serif" font-size="9.00">normalize&#45;machine.mts</text>
</a>
</g>
</g>
<!-- src/parse/scxml/index.mjs&#45;&gt;src/parse/scxml/normalize&#45;machine.mts -->
<g id="edge30" class="edge">
<title>src/parse/scxml/index.mjs&#45;&gt;src/parse/scxml/normalize&#45;machine.mts</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M667.12,-214.04C702.46,-214.04 759,-214.04 759,-214.04 759,-214.04 759,-213.04 759,-213.04"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="761.1,-213.1 759,-207.1 756.9,-213.1 761.1,-213.1"/>
</g>
<!-- src/parse/scxml/utl.mts -->
<g id="node24" class="node">
<title>src/parse/scxml/utl.mts</title>
<g id="a_node24"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/main/src/parse/scxml/utl.mts" xlink:title="utl.mts">
<path fill="#ffccff" stroke="black" d="M987.96,-225.88C987.96,-225.88 945.79,-225.88 945.79,-225.88 942.83,-225.88 939.88,-222.92 939.88,-219.96 939.88,-219.96 939.88,-214.04 939.88,-214.04 939.88,-211.08 942.83,-208.12 945.79,-208.12 945.79,-208.12 987.96,-208.12 987.96,-208.12 990.92,-208.12 993.88,-211.08 993.88,-214.04 993.88,-214.04 993.88,-219.96 993.88,-219.96 993.88,-222.92 990.92,-225.88 987.96,-225.88"/>
<text text-anchor="start" x="953.75" y="-213.32" font-family="Helvetica,sans-Serif" font-size="9.00">utl.mts</text>
</a>
</g>
</g>
<!-- src/parse/scxml/index.mjs&#45;&gt;src/parse/scxml/utl.mts -->
<g id="edge31" class="edge">
<title>src/parse/scxml/index.mjs&#45;&gt;src/parse/scxml/utl.mts</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M667.3,-219.96C667.3,-219.96 930.46,-219.96 930.46,-219.96"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="930.46,-222.06 936.46,-219.96 930.46,-217.86 930.46,-222.06"/>
</g>
<!-- src/parse/smcat/smcat&#45;parser.mjs&#45;&gt;src/parse/parser&#45;helpers.mts -->
<g id="edge34" class="edge">
<title>src/parse/smcat/smcat&#45;parser.mjs&#45;&gt;src/parse/parser&#45;helpers.mts</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M682.62,-101C732.87,-101 809,-101 809,-101 809,-101 809,-134.92 809,-134.92"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="806.9,-134.92 809,-140.92 811.1,-134.92 806.9,-134.92"/>
</g>
<!-- src/parse/parser&#45;helpers.mts&#45;&gt;src/state&#45;machine&#45;model.mts -->
<g id="edge27" class="edge">
<title>src/parse/parser&#45;helpers.mts&#45;&gt;src/state&#45;machine&#45;model.mts</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M854.87,-153C971.47,-153 1267,-153 1267,-153 1267,-153 1267,-540.73 1267,-540.73"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="1264.9,-540.73 1267,-546.73 1269.1,-540.73 1264.9,-540.73"/>
</g>
<!-- src/parse/scxml/normalize&#45;machine.mts&#45;&gt;src/parse/scxml/utl.mts -->
<g id="edge33" class="edge">
<title>src/parse/scxml/normalize&#45;machine.mts&#45;&gt;src/parse/scxml/utl.mts</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M858,-204.2C858,-210.23 858,-217 858,-217 858,-217 930.37,-217 930.37,-217"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="930.37,-219.1 936.37,-217 930.37,-214.9 930.37,-219.1"/>
</g>
<!-- src/parse/scxml/scxml.d.ts -->
<g id="node25" class="node">
<title>src/parse/scxml/scxml.d.ts</title>
<g id="a_node25"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/main/src/parse/scxml/scxml.d.ts" xlink:title="scxml.d.ts">
<path fill="#ffccff" stroke="none" d="M988.83,-195.88C988.83,-195.88 944.92,-195.88 944.92,-195.88 941.96,-195.88 939,-192.92 939,-189.96 939,-189.96 939,-184.04 939,-184.04 939,-181.08 941.96,-178.12 944.92,-178.12 944.92,-178.12 988.83,-178.12 988.83,-178.12 991.79,-178.12 994.75,-181.08 994.75,-184.04 994.75,-184.04 994.75,-189.96 994.75,-189.96 994.75,-192.92 991.79,-195.88 988.83,-195.88"/>
<text text-anchor="start" x="947" y="-183.32" font-family="Helvetica,sans-Serif" font-size="9.00">scxml.d.ts</text>
</a>
</g>
</g>
<!-- src/parse/scxml/normalize&#45;machine.mts&#45;&gt;src/parse/scxml/scxml.d.ts -->
<g id="edge32" class="edge">
<title>src/parse/scxml/normalize&#45;machine.mts&#45;&gt;src/parse/scxml/scxml.d.ts</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M864.26,-191C864.26,-191 929.54,-191 929.54,-191"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="929.54,-193.1 935.54,-191 929.54,-188.9 929.54,-193.1"/>
</g>
<!-- src/render/dot/attributebuilder.mts -->
<g id="node26" class="node">
<title>src/render/dot/attributebuilder.mts</title>
<g id="a_node26"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/main/src/render/dot/attributebuilder.mts" xlink:title="attributebuilder.mts">
<path fill="#ccccff" stroke="black" d="M1007.96,-607.88C1007.96,-607.88 925.79,-607.88 925.79,-607.88 922.83,-607.88 919.88,-604.92 919.88,-601.96 919.88,-601.96 919.88,-596.04 919.88,-596.04 919.88,-593.08 922.83,-590.12 925.79,-590.12 925.79,-590.12 1007.96,-590.12 1007.96,-590.12 1010.92,-590.12 1013.88,-593.08 1013.88,-596.04 1013.88,-596.04 1013.88,-601.96 1013.88,-601.96 1013.88,-604.92 1010.92,-607.88 1007.96,-607.88"/>
<text text-anchor="start" x="927.88" y="-595.33" font-family="Helvetica,sans-Serif" font-size="9.00">attributebuilder.mts</text>
</a>
</g>
</g>
<!-- src/render/dot/counter.mts -->
<g id="node27" class="node">
<title>src/render/dot/counter.mts</title>
<g id="a_node27"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/main/src/render/dot/counter.mts" xlink:title="counter.mts">
<path fill="#ccccff" stroke="black" d="M992.58,-637.88C992.58,-637.88 941.17,-637.88 941.17,-637.88 938.21,-637.88 935.25,-634.92 935.25,-631.96 935.25,-631.96 935.25,-626.04 935.25,-626.04 935.25,-623.08 938.21,-620.12 941.17,-620.12 941.17,-620.12 992.58,-620.12 992.58,-620.12 995.54,-620.12 998.5,-623.08 998.5,-626.04 998.5,-626.04 998.5,-631.96 998.5,-631.96 998.5,-634.92 995.54,-637.88 992.58,-637.88"/>
<text text-anchor="start" x="943.25" y="-625.33" font-family="Helvetica,sans-Serif" font-size="9.00">counter.mts</text>
</a>
</g>
</g>
<!-- src/render/dot/dot.states.template.js -->
<g id="node28" class="node">
<title>src/render/dot/dot.states.template.js</title>
<g id="a_node28"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/main/src/render/dot/dot.states.template.js" xlink:title="dot.states.template.js">
<polygon fill="#ccccff" stroke="none" points="1171.25,-637.88 1069.75,-637.88 1069.75,-620.12 1171.25,-620.12 1171.25,-637.88"/>
<text text-anchor="start" x="1077.75" y="-625.33" font-family="Helvetica,sans-Serif" font-size="9.00">dot.states.template.js</text>
</a>
</g>
</g>
<!-- src/render/dot/dot.template.js -->
<g id="node29" class="node">
<title>src/render/dot/dot.template.js</title>
<g id="a_node29"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/main/src/render/dot/dot.template.js" xlink:title="dot.template.js">
<polygon fill="#ccccff" stroke="none" points="1158.12,-667.88 1082.88,-667.88 1082.88,-650.12 1158.12,-650.12 1158.12,-667.88"/>
<text text-anchor="start" x="1090.88" y="-655.33" font-family="Helvetica,sans-Serif" font-size="9.00">dot.template.js</text>
</a>
</g>
</g>
<!-- src/render/dot/extended&#45;types.d.ts -->
<g id="node30" class="node">
<title>src/render/dot/extended&#45;types.d.ts</title>
<g id="a_node30"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/main/src/render/dot/extended-types.d.ts" xlink:title="extended&#45;types.d.ts">
<path fill="#ccccff" stroke="none" d="M1162.33,-697.88C1162.33,-697.88 1078.67,-697.88 1078.67,-697.88 1075.71,-697.88 1072.75,-694.92 1072.75,-691.96 1072.75,-691.96 1072.75,-686.04 1072.75,-686.04 1072.75,-683.08 1075.71,-680.12 1078.67,-680.12 1078.67,-680.12 1162.33,-680.12 1162.33,-680.12 1165.29,-680.12 1168.25,-683.08 1168.25,-686.04 1168.25,-686.04 1168.25,-691.96 1168.25,-691.96 1168.25,-694.92 1165.29,-697.88 1162.33,-697.88"/>
<text text-anchor="start" x="1080.75" y="-685.33" font-family="Helvetica,sans-Serif" font-size="9.00">extended&#45;types.d.ts</text>
</a>
</g>
</g>
<!-- src/render/dot/index.mjs&#45;&gt;src/options.mts -->
<g id="edge35" class="edge">
<title>src/render/dot/index.mjs&#45;&gt;src/options.mts</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M836.27,-599.06C854.9,-599.06 876,-599.06 876,-599.06 876,-599.06 876,-402.04 876,-402.04 876,-402.04 926.32,-402.04 926.32,-402.04"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="926.32,-404.14 932.32,-402.04 926.32,-399.94 926.32,-404.14"/>
</g>
<!-- src/render/dot/index.mjs&#45;&gt;src/state&#45;machine&#45;model.mts -->
<g id="edge36" class="edge">
<title>src/render/dot/index.mjs&#45;&gt;src/state&#45;machine&#45;model.mts</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M809,-595.69C809,-582.25 809,-559 809,-559 809,-559 1197.77,-559 1197.77,-559"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="1197.77,-561.1 1203.77,-559 1197.77,-556.9 1197.77,-561.1"/>
</g>
<!-- src/render/dot/index.mjs&#45;&gt;src/render/dot/attributebuilder.mts -->
<g id="edge37" class="edge">
<title>src/render/dot/index.mjs&#45;&gt;src/render/dot/attributebuilder.mts</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M836.35,-602C836.35,-602 910.59,-602 910.59,-602"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="910.59,-604.1 916.59,-602 910.59,-599.9 910.59,-604.1"/>
</g>
<!-- src/render/dot/index.mjs&#45;&gt;src/render/dot/counter.mts -->
<g id="edge38" class="edge">
<title>src/render/dot/index.mjs&#45;&gt;src/render/dot/counter.mts</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M825,-614.21C825,-620.98 825,-629 825,-629 825,-629 926.01,-629 926.01,-629"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="926.01,-631.1 932.01,-629 926.01,-626.9 926.01,-631.1"/>
</g>
<!-- src/render/dot/render&#45;dot&#45;from&#45;ast.mts -->
<g id="node32" class="node">
<title>src/render/dot/render&#45;dot&#45;from&#45;ast.mts</title>
<g id="a_node32"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/main/src/render/dot/render-dot-from-ast.mts" xlink:title="render&#45;dot&#45;from&#45;ast.mts">
<path fill="#ccccff" stroke="black" d="M1016.58,-667.88C1016.58,-667.88 917.17,-667.88 917.17,-667.88 914.21,-667.88 911.25,-664.92 911.25,-661.96 911.25,-661.96 911.25,-656.04 911.25,-656.04 911.25,-653.08 914.21,-650.12 917.17,-650.12 917.17,-650.12 1016.58,-650.12 1016.58,-650.12 1019.54,-650.12 1022.5,-653.08 1022.5,-656.04 1022.5,-656.04 1022.5,-661.96 1022.5,-661.96 1022.5,-664.92 1019.54,-667.88 1016.58,-667.88"/>
<text text-anchor="start" x="919.25" y="-655.33" font-family="Helvetica,sans-Serif" font-size="9.00">render&#45;dot&#45;from&#45;ast.mts</text>
</a>
</g>
</g>
<!-- src/render/dot/index.mjs&#45;&gt;src/render/dot/render&#45;dot&#45;from&#45;ast.mts -->
<g id="edge39" class="edge">
<title>src/render/dot/index.mjs&#45;&gt;src/render/dot/render&#45;dot&#45;from&#45;ast.mts</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M836.37,-604.94C868.26,-604.94 916,-604.94 916,-604.94 916,-604.94 916,-641.05 916,-641.05"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="913.9,-641.05 916,-647.05 918.1,-641.05 913.9,-641.05"/>
</g>
<!-- src/render/dot/state&#45;transformers.mts -->
<g id="node33" class="node">
<title>src/render/dot/state&#45;transformers.mts</title>
<g id="a_node33"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/main/src/render/dot/state-transformers.mts" xlink:title="state&#45;transformers.mts">
<path fill="#ccccff" stroke="black" d="M1013.96,-697.88C1013.96,-697.88 919.79,-697.88 919.79,-697.88 916.83,-697.88 913.88,-694.92 913.88,-691.96 913.88,-691.96 913.88,-686.04 913.88,-686.04 913.88,-683.08 916.83,-680.12 919.79,-680.12 919.79,-680.12 1013.96,-680.12 1013.96,-680.12 1016.92,-680.12 1019.88,-683.08 1019.88,-686.04 1019.88,-686.04 1019.88,-691.96 1019.88,-691.96 1019.88,-694.92 1016.92,-697.88 1013.96,-697.88"/>
<text text-anchor="start" x="921.88" y="-685.33" font-family="Helvetica,sans-Serif" font-size="9.00">state&#45;transformers.mts</text>
</a>
</g>
</g>
<!-- src/render/dot/index.mjs&#45;&gt;src/render/dot/state&#45;transformers.mts -->
<g id="edge40" class="edge">
<title>src/render/dot/index.mjs&#45;&gt;src/render/dot/state&#45;transformers.mts</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M814,-614.31C814,-636.18 814,-689 814,-689 814,-689 904.38,-689 904.38,-689"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="904.38,-691.1 910.38,-689 904.38,-686.9 904.38,-691.1"/>
</g>
<!-- src/render/dot/transition&#45;transformers.mts -->
<g id="node34" class="node">
<title>src/render/dot/transition&#45;transformers.mts</title>
<g id="a_node34"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/main/src/render/dot/transition-transformers.mts" xlink:title="transition&#45;transformers.mts">
<path fill="#ccccff" stroke="black" d="M1022.96,-727.88C1022.96,-727.88 910.79,-727.88 910.79,-727.88 907.83,-727.88 904.88,-724.92 904.88,-721.96 904.88,-721.96 904.88,-716.04 904.88,-716.04 904.88,-713.08 907.83,-710.12 910.79,-710.12 910.79,-710.12 1022.96,-710.12 1022.96,-710.12 1025.92,-710.12 1028.88,-713.08 1028.88,-716.04 1028.88,-716.04 1028.88,-721.96 1028.88,-721.96 1028.88,-724.92 1025.92,-727.88 1022.96,-727.88"/>
<text text-anchor="start" x="912.88" y="-715.33" font-family="Helvetica,sans-Serif" font-size="9.00">transition&#45;transformers.mts</text>
</a>
</g>
</g>
<!-- src/render/dot/index.mjs&#45;&gt;src/render/dot/transition&#45;transformers.mts -->
<g id="edge41" class="edge">
<title>src/render/dot/index.mjs&#45;&gt;src/render/dot/transition&#45;transformers.mts</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M792,-614.33C792,-641.56 792,-719 792,-719 792,-719 895.7,-719 895.7,-719"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="895.7,-721.1 901.7,-719 895.7,-716.9 895.7,-721.1"/>
</g>
<!-- src/render/dot/utl.mts -->
<g id="node35" class="node">
<title>src/render/dot/utl.mts</title>
<g id="a_node35"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/main/src/render/dot/utl.mts" xlink:title="utl.mts">
<path fill="#ccccff" stroke="black" d="M1141.58,-727.88C1141.58,-727.88 1099.42,-727.88 1099.42,-727.88 1096.46,-727.88 1093.5,-724.92 1093.5,-721.96 1093.5,-721.96 1093.5,-716.04 1093.5,-716.04 1093.5,-713.08 1096.46,-710.12 1099.42,-710.12 1099.42,-710.12 1141.58,-710.12 1141.58,-710.12 1144.54,-710.12 1147.5,-713.08 1147.5,-716.04 1147.5,-716.04 1147.5,-721.96 1147.5,-721.96 1147.5,-724.92 1144.54,-727.88 1141.58,-727.88"/>
<text text-anchor="start" x="1107.38" y="-715.33" font-family="Helvetica,sans-Serif" font-size="9.00">utl.mts</text>
</a>
</g>
</g>
<!-- src/render/dot/index.mjs&#45;&gt;src/render/dot/utl.mts -->
<g id="edge42" class="edge">
<title>src/render/dot/index.mjs&#45;&gt;src/render/dot/utl.mts</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M803,-614.14C803,-638.64 803,-704 803,-704 803,-704 1121,-704 1121,-704 1121,-704 1121,-704.58 1121,-704.58"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="1118.9,-700.73 1121,-706.73 1123.1,-700.73 1118.9,-700.73"/>
</g>
<!-- src/render/dot/render&#45;dot&#45;from&#45;ast.mts&#45;&gt;src/render/dot/dot.states.template.js -->
<g id="edge43" class="edge">
<title>src/render/dot/render&#45;dot&#45;from&#45;ast.mts&#45;&gt;src/render/dot/dot.states.template.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-dasharray="5,2" stroke-opacity="0.466667" d="M1019,-649.84C1019,-641.01 1019,-629 1019,-629 1019,-629 1060.43,-629 1060.43,-629"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="1060.43,-631.1 1066.43,-629 1060.43,-626.9 1060.43,-631.1"/>
</g>
<!-- src/render/dot/render&#45;dot&#45;from&#45;ast.mts&#45;&gt;src/render/dot/dot.template.js -->
<g id="edge44" class="edge">
<title>src/render/dot/render&#45;dot&#45;from&#45;ast.mts&#45;&gt;src/render/dot/dot.template.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-dasharray="5,2" stroke-opacity="0.466667" d="M1022.77,-659C1022.77,-659 1073.62,-659 1073.62,-659"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="1073.62,-661.1 1079.62,-659 1073.62,-656.9 1073.62,-661.1"/>
</g>
<!-- src/render/dot/state&#45;transformers.mts&#45;&gt;src/render/dot/extended&#45;types.d.ts -->
<g id="edge45" class="edge">
<title>src/render/dot/state&#45;transformers.mts&#45;&gt;src/render/dot/extended&#45;types.d.ts</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M1020.17,-686.04C1020.17,-686.04 1063.41,-686.04 1063.41,-686.04"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="1063.41,-688.14 1069.41,-686.04 1063.41,-683.94 1063.41,-688.14"/>
</g>
<!-- src/render/dot/state&#45;transformers.mts&#45;&gt;src/render/dot/utl.mts -->
<g id="edge46" class="edge">
<title>src/render/dot/state&#45;transformers.mts&#45;&gt;src/render/dot/utl.mts</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M1020.3,-691.96C1037.41,-691.96 1052,-691.96 1052,-691.96 1052,-691.96 1052,-714.56 1052,-714.56 1052,-714.56 1084.01,-714.56 1084.01,-714.56"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="1084.01,-716.66 1090.01,-714.56 1084.01,-712.46 1084.01,-716.66"/>
</g>
<!-- src/render/dot/transition&#45;transformers.mts&#45;&gt;src/render/dot/extended&#45;types.d.ts -->
<g id="edge47" class="edge">
<title>src/render/dot/transition&#45;transformers.mts&#45;&gt;src/render/dot/extended&#45;types.d.ts</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M1029.21,-719C1057.18,-719 1084,-719 1084,-719 1084,-719 1084,-707.19 1084,-707.19"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="1086.1,-707.19 1084,-701.19 1081.9,-707.19 1086.1,-707.19"/>
</g>
<!-- src/render/dot/transition&#45;transformers.mts&#45;&gt;src/render/dot/utl.mts -->
<g id="edge48" class="edge">
<title>src/render/dot/transition&#45;transformers.mts&#45;&gt;src/render/dot/utl.mts</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M1029.36,-723.44C1029.36,-723.44 1084.27,-723.44 1084.27,-723.44"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="1084.27,-725.54 1090.27,-723.44 1084.27,-721.34 1084.27,-725.54"/>
</g>
<!-- src/render/dot/utl.mts&#45;&gt;src/state&#45;machine&#45;model.mts -->
<g id="edge49" class="edge">
<title>src/render/dot/utl.mts&#45;&gt;src/state&#45;machine&#45;model.mts</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M1147.71,-719C1190.08,-719 1267,-719 1267,-719 1267,-719 1267,-577.09 1267,-577.09"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="1269.1,-577.09 1267,-571.09 1264.9,-577.09 1269.1,-577.09"/>
</g>
<!-- src/render/scjson/index.mts&#45;&gt;src/state&#45;machine&#45;model.mts -->
<g id="edge61" class="edge">
<title>src/render/scjson/index.mts&#45;&gt;src/state&#45;machine&#45;model.mts</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M836.22,-790.04C859.19,-790.04 888,-790.04 888,-790.04 888,-790.04 888,-563.44 888,-563.44 888,-563.44 1198.02,-563.44 1198.02,-563.44"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="1198.02,-565.54 1204.02,-563.44 1198.02,-561.34 1198.02,-565.54"/>
</g>
<!-- src/render/scjson/make&#45;valid&#45;event&#45;names.mts -->
<g id="node41" class="node">
<title>src/render/scjson/make&#45;valid&#45;event&#45;names.mts</title>
<g id="a_node41"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/main/src/render/scjson/make-valid-event-names.mts" xlink:title="make&#45;valid&#45;event&#45;names.mts">
<path fill="#ccccff" stroke="black" d="M1027.83,-801.88C1027.83,-801.88 905.92,-801.88 905.92,-801.88 902.96,-801.88 900,-798.92 900,-795.96 900,-795.96 900,-790.04 900,-790.04 900,-787.08 902.96,-784.12 905.92,-784.12 905.92,-784.12 1027.83,-784.12 1027.83,-784.12 1030.79,-784.12 1033.75,-787.08 1033.75,-790.04 1033.75,-790.04 1033.75,-795.96 1033.75,-795.96 1033.75,-798.92 1030.79,-801.88 1027.83,-801.88"/>
<text text-anchor="start" x="908" y="-789.33" font-family="Helvetica,sans-Serif" font-size="9.00">make&#45;valid&#45;event&#45;names.mts</text>
</a>
</g>
</g>
<!-- src/render/scjson/index.mts&#45;&gt;src/render/scjson/make&#45;valid&#45;event&#45;names.mts -->
<g id="edge62" class="edge">
<title>src/render/scjson/index.mts&#45;&gt;src/render/scjson/make&#45;valid&#45;event&#45;names.mts</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M836.35,-795.96C836.35,-795.96 890.64,-795.96 890.64,-795.96"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="890.64,-798.06 896.64,-795.96 890.64,-793.86 890.64,-798.06"/>
</g>
<!-- src/render/scjson/make&#45;valid&#45;xml&#45;name.mts -->
<g id="node42" class="node">
<title>src/render/scjson/make&#45;valid&#45;xml&#45;name.mts</title>
<g id="a_node42"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/main/src/render/scjson/make-valid-xml-name.mts" xlink:title="make&#45;valid&#45;xml&#45;name.mts">
<path fill="#ccccff" stroke="black" d="M1021.46,-831.88C1021.46,-831.88 912.29,-831.88 912.29,-831.88 909.33,-831.88 906.38,-828.92 906.38,-825.96 906.38,-825.96 906.38,-820.04 906.38,-820.04 906.38,-817.08 909.33,-814.12 912.29,-814.12 912.29,-814.12 1021.46,-814.12 1021.46,-814.12 1024.42,-814.12 1027.38,-817.08 1027.38,-820.04 1027.38,-820.04 1027.38,-825.96 1027.38,-825.96 1027.38,-828.92 1024.42,-831.88 1021.46,-831.88"/>
<text text-anchor="start" x="914.38" y="-819.33" font-family="Helvetica,sans-Serif" font-size="9.00">make&#45;valid&#45;xml&#45;name.mts</text>
</a>
</g>
</g>
<!-- src/render/scjson/index.mts&#45;&gt;src/render/scjson/make&#45;valid&#45;xml&#45;name.mts -->
<g id="edge63" class="edge">
<title>src/render/scjson/index.mts&#45;&gt;src/render/scjson/make&#45;valid&#45;xml&#45;name.mts</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M818,-802.16C818,-810.99 818,-823 818,-823 818,-823 896.87,-823 896.87,-823"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="896.87,-825.1 902.87,-823 896.87,-820.9 896.87,-825.1"/>
</g>
<!-- src/render/scjson/scjson.d.ts -->
<g id="node43" class="node">
<title>src/render/scjson/scjson.d.ts</title>
<g id="a_node43"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/main/src/render/scjson/scjson.d.ts" xlink:title="scjson.d.ts">
<path fill="#ccccff" stroke="none" d="M990.33,-861.88C990.33,-861.88 943.42,-861.88 943.42,-861.88 940.46,-861.88 937.5,-858.92 937.5,-855.96 937.5,-855.96 937.5,-850.04 937.5,-850.04 937.5,-847.08 940.46,-844.12 943.42,-844.12 943.42,-844.12 990.33,-844.12 990.33,-844.12 993.29,-844.12 996.25,-847.08 996.25,-850.04 996.25,-850.04 996.25,-855.96 996.25,-855.96 996.25,-858.92 993.29,-861.88 990.33,-861.88"/>
<text text-anchor="start" x="945.5" y="-849.33" font-family="Helvetica,sans-Serif" font-size="9.00">scjson.d.ts</text>
</a>
</g>
</g>
<!-- src/render/scjson/index.mts&#45;&gt;src/render/scjson/scjson.d.ts -->
<g id="edge64" class="edge">
<title>src/render/scjson/index.mts&#45;&gt;src/render/scjson/scjson.d.ts</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M800,-802.38C800,-819.25 800,-853 800,-853 800,-853 928.01,-853 928.01,-853"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="928.01,-855.1 934.01,-853 928.01,-850.9 928.01,-855.1"/>
</g>
<!-- src/render/scxml/index.mts&#45;&gt;src/render/scjson/index.mts -->
<g id="edge65" class="edge">
<title>src/render/scxml/index.mts&#45;&gt;src/render/scjson/index.mts</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M640,-903.93C640,-876.69 640,-797.44 640,-797.44 640,-797.44 771.54,-797.44 771.54,-797.44"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="771.54,-799.54 777.54,-797.44 771.54,-795.34 771.54,-799.54"/>
</g>
<!-- src/render/scxml/render&#45;from&#45;scjson.mjs -->
<g id="node44" class="node">
<title>src/render/scxml/render&#45;from&#45;scjson.mjs</title>
<g id="a_node44"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/main/src/render/scxml/render-from-scjson.mjs" xlink:title="render&#45;from&#45;scjson.mjs">
<path fill="#ccccff" stroke="black" d="M857.33,-921.88C857.33,-921.88 759.42,-921.88 759.42,-921.88 756.46,-921.88 753.5,-918.92 753.5,-915.96 753.5,-915.96 753.5,-910.04 753.5,-910.04 753.5,-907.08 756.46,-904.12 759.42,-904.12 759.42,-904.12 857.33,-904.12 857.33,-904.12 860.29,-904.12 863.25,-907.08 863.25,-910.04 863.25,-910.04 863.25,-915.96 863.25,-915.96 863.25,-918.92 860.29,-921.88 857.33,-921.88"/>
<text text-anchor="start" x="761.5" y="-909.33" font-family="Helvetica,sans-Serif" font-size="9.00">render&#45;from&#45;scjson.mjs</text>
</a>
</g>
</g>
<!-- src/render/scxml/index.mts&#45;&gt;src/render/scxml/render&#45;from&#45;scjson.mjs -->
<g id="edge66" class="edge">
<title>src/render/scxml/index.mts&#45;&gt;src/render/scxml/render&#45;from&#45;scjson.mjs</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M667.28,-913C667.28,-913 744.04,-913 744.04,-913"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="744.04,-915.1 750.04,-913 744.04,-910.9 744.04,-915.1"/>
</g>
<!-- src/render/smcat/smcat.template.js -->
<g id="node47" class="node">
<title>src/render/smcat/smcat.template.js</title>
<g id="a_node47"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/main/src/render/smcat/smcat.template.js" xlink:title="smcat.template.js">
<polygon fill="#ccccff" stroke="none" points="851.62,-457.88 765.12,-457.88 765.12,-440.12 851.62,-440.12 851.62,-457.88"/>
<text text-anchor="start" x="773.12" y="-445.32" font-family="Helvetica,sans-Serif" font-size="9.00">smcat.template.js</text>
</a>
</g>
</g>
<!-- src/render/smcat/index.mts&#45;&gt;src/render/smcat/smcat.template.js -->
<g id="edge69" class="edge">
<title>src/render/smcat/index.mts&#45;&gt;src/render/smcat/smcat.template.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-dasharray="5,2" stroke-opacity="0.466667" d="M667.28,-449C667.28,-449 755.84,-449 755.84,-449"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="755.84,-451.1 761.84,-449 755.84,-446.9 755.84,-451.1"/>
</g>
<!-- src/render/vector/vector&#45;native&#45;dot&#45;with&#45;fallback.mts&#45;&gt;src/options.mts -->
<g id="edge70" class="edge">
<title>src/render/vector/vector&#45;native&#45;dot&#45;with&#45;fallback.mts&#45;&gt;src/options.mts</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M705,-529.89C705,-499.02 705,-400.21 705,-400.21 705,-400.21 926.26,-400.21 926.26,-400.21"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="926.26,-402.31 932.26,-400.21 926.26,-398.11 926.26,-402.31"/>
</g>
<!-- src/render/vector/vector&#45;native&#45;dot&#45;with&#45;fallback.mts&#45;&gt;src/render/dot/index.mjs -->
<g id="edge71" class="edge">
<title>src/render/vector/vector&#45;native&#45;dot&#45;with&#45;fallback.mts&#45;&gt;src/render/dot/index.mjs</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M692,-548.2C692,-565.96 692,-603.23 692,-603.23 692,-603.23 771.47,-603.23 771.47,-603.23"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="771.47,-605.33 777.47,-603.23 771.47,-601.13 771.47,-605.33"/>
</g>
<!-- src/render/vector/dot&#45;to&#45;vector&#45;native.mts -->
<g id="node48" class="node">
<title>src/render/vector/dot&#45;to&#45;vector&#45;native.mts</title>
<g id="a_node48"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/main/src/render/vector/dot-to-vector-native.mts" xlink:title="dot&#45;to&#45;vector&#45;native.mts">
<path fill="#ccccff" stroke="black" d="M858.08,-547.88C858.08,-547.88 758.67,-547.88 758.67,-547.88 755.71,-547.88 752.75,-544.92 752.75,-541.96 752.75,-541.96 752.75,-536.04 752.75,-536.04 752.75,-533.08 755.71,-530.12 758.67,-530.12 758.67,-530.12 858.08,-530.12 858.08,-530.12 861.04,-530.12 864,-533.08 864,-536.04 864,-536.04 864,-541.96 864,-541.96 864,-544.92 861.04,-547.88 858.08,-547.88"/>
<text text-anchor="start" x="760.75" y="-535.33" font-family="Helvetica,sans-Serif" font-size="9.00">dot&#45;to&#45;vector&#45;native.mts</text>
</a>
</g>
</g>
<!-- src/render/vector/vector&#45;native&#45;dot&#45;with&#45;fallback.mts&#45;&gt;src/render/vector/dot&#45;to&#45;vector&#45;native.mts -->
<g id="edge72" class="edge">
<title>src/render/vector/vector&#45;native&#45;dot&#45;with&#45;fallback.mts&#45;&gt;src/render/vector/dot&#45;to&#45;vector&#45;native.mts</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M716.95,-539C716.95,-539 743.44,-539 743.44,-539"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="743.44,-541.1 749.44,-539 743.44,-536.9 743.44,-541.1"/>
</g>
<!-- src/render/vector/vector&#45;with&#45;wasm.mts&#45;&gt;src/options.mts -->
<g id="edge73" class="edge">
<title>src/render/vector/vector&#45;with&#45;wasm.mts&#45;&gt;src/options.mts</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M682,-499.95C682,-473.53 682,-398.38 682,-398.38 682,-398.38 926.27,-398.38 926.27,-398.38"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="926.27,-400.48 932.27,-398.38 926.27,-396.28 926.27,-400.48"/>
</g>
<!-- src/render/vector/vector&#45;with&#45;wasm.mts&#45;&gt;src/render/dot/index.mjs -->
<g id="edge74" class="edge">
<title>src/render/vector/vector&#45;with&#45;wasm.mts&#45;&gt;src/render/dot/index.mjs</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M691.27,-509C709.71,-509 726,-509 726,-509 726,-509 726,-599.67 726,-599.67 726,-599.67 771.46,-599.67 771.46,-599.67"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="771.46,-601.78 777.46,-599.68 771.46,-597.58 771.46,-601.78"/>
</g>
<!-- src/render/scxml/scxml.states.template.js -->
<g id="node45" class="node">
<title>src/render/scxml/scxml.states.template.js</title>
<g id="a_node45"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/main/src/render/scxml/scxml.states.template.js" xlink:title="scxml.states.template.js">
<polygon fill="#ccccff" stroke="none" points="1022.88,-921.88 910.88,-921.88 910.88,-904.12 1022.88,-904.12 1022.88,-921.88"/>
<text text-anchor="start" x="918.88" y="-909.33" font-family="Helvetica,sans-Serif" font-size="9.00">scxml.states.template.js</text>
</a>
</g>
</g>
<!-- src/render/scxml/render&#45;from&#45;scjson.mjs&#45;&gt;src/render/scxml/scxml.states.template.js -->
<g id="edge67" class="edge">
<title>src/render/scxml/render&#45;from&#45;scjson.mjs&#45;&gt;src/render/scxml/scxml.states.template.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-dasharray="5,2" stroke-opacity="0.466667" d="M863.37,-913C863.37,-913 901.61,-913 901.61,-913"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="901.61,-915.1 907.61,-913 901.61,-910.9 901.61,-915.1"/>
</g>
<!-- src/render/scxml/scxml.template.js -->
<g id="node46" class="node">
<title>src/render/scxml/scxml.template.js</title>
<g id="a_node46"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/main/src/render/scxml/scxml.template.js" xlink:title="scxml.template.js">
<polygon fill="#ccccff" stroke="none" points="1009.75,-951.88 924,-951.88 924,-934.12 1009.75,-934.12 1009.75,-951.88"/>
<text text-anchor="start" x="932" y="-939.33" font-family="Helvetica,sans-Serif" font-size="9.00">scxml.template.js</text>
</a>
</g>
</g>
<!-- src/render/scxml/render&#45;from&#45;scjson.mjs&#45;&gt;src/render/scxml/scxml.template.js -->
<g id="edge68" class="edge">
<title>src/render/scxml/render&#45;from&#45;scjson.mjs&#45;&gt;src/render/scxml/scxml.template.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-dasharray="5,2" stroke-opacity="0.466667" d="M809,-922.16C809,-930.99 809,-943 809,-943 809,-943 914.71,-943 914.71,-943"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="914.71,-945.1 920.71,-943 914.71,-940.9 914.71,-945.1"/>
</g>
</g>
</svg>
    <script>
      var gMode = new Mode();

var title2ElementMap = (function makeElementMap() {
  /** @type {NodeListOf<SVGGElement>} */
  var nodes = document.querySelectorAll(".node");
  /** @type {NodeListOf<SVGGElement>} */
  var edges = document.querySelectorAll(".edge");
  return new Title2ElementMap(edges, nodes);
})();

function getHoverHandler(pTitle2ElementMap) {
  /** @type {string} */
  var currentHighlightedTitle = "";

  /** @param {MouseEvent} pMouseEvent */
  return function hoverHighlightHandler(pMouseEvent) {
    var closestNodeOrEdge = pMouseEvent.target.closest(".edge, .node");
    var closestTitleText = getTitleText(closestNodeOrEdge);

    if (
      !(currentHighlightedTitle === closestTitleText) &&
      gMode.get() === gMode.HOVER
    ) {
      resetNodesAndEdges();
      addHighlight(closestNodeOrEdge);
      pTitle2ElementMap.get(closestTitleText).forEach(addHighlight);
      currentHighlightedTitle = closestTitleText;
    }
  };
}

function getSelectHandler(pTitle2ElementMap) {
  /** @type {string} */
  var currentHighlightedTitle = "";

  /** @param {MouseEvent} pMouseEvent */
  return function selectHighlightHandler(pMouseEvent) {
    pMouseEvent.preventDefault();

    var closestNodeOrEdge = pMouseEvent.target.closest(".edge, .node");
    var closestTitleText = getTitleText(closestNodeOrEdge);

    if (!!closestNodeOrEdge) {
      gMode.setToSelect();
    } else {
      gMode.setToHover();
    }
    if (!(currentHighlightedTitle === closestTitleText)) {
      resetNodesAndEdges();
      addHighlight(closestNodeOrEdge);
      pTitle2ElementMap.get(closestTitleText).forEach(addHighlight);
      currentHighlightedTitle = closestTitleText;
    }
  };
}
function Mode() {
  var HOVER = 1;
  var SELECT = 2;

  function setToHover() {
    this._mode = HOVER;
  }
  function setToSelect() {
    this._mode = SELECT;
  }

  /**
   * @returns {number}
   */
  function get() {
    return this._mode || HOVER;
  }

  return {
    HOVER: HOVER,
    SELECT: SELECT,
    setToHover: setToHover,
    setToSelect: setToSelect,
    get: get,
  };
}

/**
 *
 * @param {SVGGelement[]} pEdges
 * @param {SVGGElement[]} pNodes
 * @return {{get: (pTitleText:string) => SVGGElement[]}}
 */
function Title2ElementMap(pEdges, pNodes) {
  /* {{[key: string]: SVGGElement[]}} */
  var elementMap = buildMap(pEdges, pNodes);

  /**
   * @param {NodeListOf<SVGGElement>} pEdges
   * @param {NodeListOf<SVGGElement>} pNodes
   * @return {{[key: string]: SVGGElement[]}}
   */
  function buildMap(pEdges, pNodes) {
    var title2NodeMap = buildTitle2NodeMap(pNodes);

    return nodeListToArray(pEdges).reduce(addEdgeToMap(title2NodeMap), {});
  }
  /**
   * @param {NodeListOf<SVGGElement>} pNodes
   * @return {{[key: string]: SVGGElement}}
   */
  function buildTitle2NodeMap(pNodes) {
    return nodeListToArray(pNodes).reduce(addNodeToMap, {});
  }

  function addNodeToMap(pMap, pNode) {
    var titleText = getTitleText(pNode);

    if (titleText) {
      pMap[titleText] = pNode;
    }
    return pMap;
  }

  function addEdgeToMap(pNodeMap) {
    return function (pEdgeMap, pEdge) {
      /** @type {string} */
      var titleText = getTitleText(pEdge);

      if (titleText) {
        var edge = pryEdgeFromTitle(titleText);

        pEdgeMap[titleText] = [pNodeMap[edge.from], pNodeMap[edge.to]];
        (pEdgeMap[edge.from] || (pEdgeMap[edge.from] = [])).push(pEdge);
        (pEdgeMap[edge.to] || (pEdgeMap[edge.to] = [])).push(pEdge);
      }
      return pEdgeMap;
    };
  }

  /**
   *
   * @param {string} pString
   * @return {{from?: string; to?:string;}}
   */
  function pryEdgeFromTitle(pString) {
    var nodeNames = pString.split(/\s*->\s*/);

    return {
      from: nodeNames.shift(),
      to: nodeNames.shift(),
    };
  }
  /**
   *
   * @param {string} pTitleText
   * @return {SVGGElement[]}
   */
  function get(pTitleText) {
    return (pTitleText && elementMap[pTitleText]) || [];
  }
  return {
    get: get,
  };
}

/**
 * @param {SVGGElement} pGElement
 * @return {string?}
 */
function getTitleText(pGElement) {
  /** @type {SVGTitleElement} */
  var title = pGElement && pGElement.querySelector("title");
  /** @type {string} */
  var titleText = title && title.textContent;

  if (titleText) {
    titleText = titleText.trim();
  }
  return titleText;
}

/**
 * @param {NodeListOf<Element>} pNodeList
 * @return {Element[]}
 */
function nodeListToArray(pNodeList) {
  var lReturnValue = [];

  pNodeList.forEach(function (pElement) {
    lReturnValue.push(pElement);
  });

  return lReturnValue;
}

function resetNodesAndEdges() {
  nodeListToArray(document.querySelectorAll(".current")).forEach(
    removeHighlight,
  );
}

/**
 * @param {SVGGElement} pGElement
 */
function removeHighlight(pGElement) {
  if (pGElement && pGElement.classList) {
    pGElement.classList.remove("current");
  }
}

/**
 * @param {SVGGElement} pGroup
 */
function addHighlight(pGroup) {
  if (pGroup && pGroup.classList) {
    pGroup.classList.add("current");
  }
}

var gHints = {
  HIDDEN: 1,
  SHOWN: 2,
  state: this.HIDDEN,
  show: function () {
    document.getElementById("hints").removeAttribute("style");
    gHints.state = gHints.SHOWN;
  },
  hide: function () {
    document.getElementById("hints").style = "display:none";
    gHints.state = gHints.HIDDEN;
  },
  toggle: function () {
    if ((gHints.state || gHints.HIDDEN) === gHints.HIDDEN) {
      gHints.show();
    } else {
      gHints.hide();
    }
  },
};

/** @param {KeyboardEvent} pKeyboardEvent */
function keyboardEventHandler(pKeyboardEvent) {
  if (pKeyboardEvent.key === "Escape") {
    resetNodesAndEdges();
    gMode.setToHover();
    gHints.hide();
  }
  if (pKeyboardEvent.key === "F1") {
    pKeyboardEvent.preventDefault();
    gHints.toggle();
  }
}

document.addEventListener("contextmenu", getSelectHandler(title2ElementMap));
document.addEventListener("mouseover", getHoverHandler(title2ElementMap));
document.addEventListener("keydown", keyboardEventHandler);
document.getElementById("close-hints").addEventListener("click", gHints.hide);
document.getElementById("button_help").addEventListener("click", gHints.toggle);
document.querySelector("svg").insertAdjacentHTML(
  "afterbegin",
  `<linearGradient id="edgeGradient">
      <stop offset="0%" stop-color="fuchsia"/>
      <stop offset="100%" stop-color="purple"/>
   </linearGradient>
  `,
);

// Add a small increment to the last value of the path to make gradients on
// horizontal paths work. Without them all browsers I tested with (firefox,
// chrome) do not render the gradient, but instead make the line transparent
// (or the color of the background, I haven't looked into it that deeply,
// but for the hack it doesn't matter which).
function skewLineABit(lDrawingInstructions) {
  var lLastValue = lDrawingInstructions.match(/(\d+\.?\d*)$/)[0];
  // Smaller values than .001 _should_ work as well, but don't in all
  // cases. Even this value is so small that it is not visible to the
  // human eye (tested with the two I have at my disposal).
  var lIncrement = 0.001;
  var lNewLastValue = parseFloat(lLastValue) + lIncrement;

  return lDrawingInstructions.replace(lLastValue, lNewLastValue);
}

nodeListToArray(document.querySelectorAll("path"))
  .filter(function (pElement) {
    return pElement.parentElement.classList.contains("edge");
  })
  .forEach(function (pElement) {
    pElement.attributes.d.value = skewLineABit(pElement.attributes.d.value);
  });

    </script>
  </body>
</html>